package com.hhf.lambda;

/**
 * @Author hhf
 * @Date 2024/6/10
 * @Description Lambda表达式与函数式接口介绍
 */
public class Lambda {

    public static void main(String[] args) {
        //1.之前的写法
        MyInterface myInterface1 = new MyInterfaceImpl();
        System.out.println(myInterface1.sum(2, 3));


        //2.匿名实现类
        MyInterface myInterface2 = new MyInterface() {
            @Override
            public int sum(int i, int j) {
                return i + j;
            }
        };
        System.out.println(myInterface2.sum(2,3));


        //3.Lambda表达式
        MyInterface myInterface3 = (i,j) -> {
            return i + j;
        };
        System.out.println(myInterface3.sum(2,3));

    }

}

/**
 * 函数式接口: 接口中只有一个未实现方法称为函数式接口
 * 使用java自带的@FunctionalInterface注解进行运行时判断
 * 只有函数式接口才能使用Lambda表达式
 */
@FunctionalInterface
interface MyInterface {

    int sum(int i,int j);
    //        void hello();
    default int run() {
        return 1;
    }
}


/**
 * 接口实现类
 * //1.编写实现类
 */
class MyInterfaceImpl implements MyInterface{

    @Override
    public int sum(int i,int j) {
        return i + j;
    }
}
